package main

import (
	"math/rand"
	"strconv"
	"time"
	"fmt"
	"sort"
)
//基于接口，自定义排序
type Student struct {
	Name string
	Id string
	Age int
}

type StudentArry []Student

func (s StudentArry)Len() int{
	return len(s)
}
// Less 返回索引为 i 的元素是否应排在索引为 j 的元素之前。
func (s StudentArry)Less(i, j int) bool  {
	return s[i].Age < s[j].Age
}
// Swap 交换索引为 i 和 j 的元素
func (s StudentArry) Swap(i, j int)  {
	s[i],s[j] = s[j],s[i]
}

type Book struct {
	Name string
	Author string
}

func init() {
	rand.Seed(time.Now().Unix())
}
func main() {
	var studentArray StudentArry

	for i := 0; i < 10; i++ {
		stu := Student{
			Id:strconv.Itoa(i),
			Name:"stu"+strconv.Itoa(i),
			Age:rand.Intn(100),
		}
		fmt.Println(stu)
		studentArray = append(studentArray,stu)
	}
	fmt.Println(studentArray)
	sort.Stable(studentArray)
	fmt.Println(studentArray)
}
